package com.whfc.ms.api.quality.service;

import com.whfc.common.result.PageData;
import com.whfc.quality.dto.*;
import com.whfc.quality.param.*;

import java.util.Date;
import java.util.List;

/**
 * @ClasssName MsQualityTaskService
 * @Description 检查任务
 * @Author hw
 * @Date 2021/3/10 15:00
 * @Version 1.0
 */
public interface MsQualityTaskService {

    /**
     * 添加检查任务
     *
     * @param param
     */
    void taskAdd(QualityTaskAddParam param);


    /**
     * 修改检查任务
     *
     * @param param
     */
    void taskEdit(QualityTaskEditParam param);

    /**
     * 删除
     *
     * @param taskId
     */
    void del(Integer taskId);

    /**
     * 检查任务列表
     *
     * @param deptId
     * @param title
     * @param overdue
     * @param startTime
     * @param endTime
     * @param state
     * @return
     */
    PageData<QualityTaskDTO> list(Integer deptId, String title,
                                  Integer overdue, Date startTime,
                                  Date endTime, Integer state,
                                  Integer pageSize, Integer pageNum);

    /**
     * 检查任务统计
     *
     * @param deptId
     * @param title
     * @param overdue
     * @param startTime
     * @param endTime
     * @return
     */
    QualityExecNumDTO taskNum(Integer deptId, String title, Integer overdue, Date startTime, Date endTime);

    /**
     * 检查任务详情（分页）
     *
     * @param taskId
     * @param pageSize
     * @param pageNum
     * @return
     */
    PageData<QualityTaskDetailsDTO> taskDetails(Integer taskId, Integer pageSize, Integer pageNum);

    /**
     * 检查任务详情（不分页）
     *
     * @param taskId
     * @return
     */
    List<QualityTaskDetailsDTO> taskDetails(Integer taskId);

    /**
     * @param taskItemId
     * @return
     */
    PageData<QualityExecDetailsDTO> execDetailsList(Integer taskItemId, Integer pageSize, Integer pageNum);

    /**
     * 检查信息数据
     *
     * @param taskItemId
     * @return
     */
    QualityExecNumDTO execNum(Integer taskItemId);

    /**
     * 发布任务
     *
     * @param param
     */
    void taskRelease(QualityTaskReleaseParam param);

    /**
     * 我的任务
     *
     * @param userId
     * @param deptId
     * @param keyword
     * @param overdue
     * @param startTime
     * @param endTime
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageData<QualityTaskExecDTO> taskExecList(Integer userId, Integer deptId,
                                              String keyword, Integer overdue,
                                              Integer state,
                                              Date startTime, Date endTime,
                                              Integer pageSize, Integer pageNum);

    /**
     * 我的任务统计
     *
     * @param userId
     * @param deptId
     * @param keyword
     * @param overdue
     * @param startTime
     * @param endTime
     * @return
     */
    QualityExecNumDTO execNum(Integer userId, Integer deptId, String keyword, Integer overdue, Date startTime, Date endTime);

    /**
     * 排查上报
     *
     * @param param
     */
    void execAdd(QualityTaskReportParam param);

    /**
     * 删除
     * @param execId
     */
    void execDel(Integer execId);

    /**
     * 完成任务
     *
     * @param param
     */
    void execComplete(QuailTaskCompleteParam param);


    /**
     * 查询任务统计
     *
     * @param userId
     * @param deptId
     * @param partId
     * @param startTime
     * @param endTime
     * @return
     */
    QualityExecNumDTO execNum(Integer userId, Integer deptId, Integer partId, Date startTime, Date endTime);

    /**
     * 检查记录列表（不分页）
     *
     * @param userId
     * @param deptId
     * @param partId
     * @param report
     * @param startTime
     * @param endTime
     * @return
     */
    List<QualityTaskExecDTO> execList(Integer userId, Integer deptId, Integer partId, Integer report, Date startTime, Date endTime);

    /**
     * 检查记录列表（分页）
     *
     * @param userId
     * @param deptId
     * @param partId
     * @param report
     * @param startTime
     * @param endTime
     * @param pageSize
     * @param pageNum
     * @return
     */
    PageData<QualityTaskExecDTO> execList(Integer userId, Integer deptId, Integer partId, Integer report, Date startTime, Date endTime, Integer pageSize, Integer pageNum);


    /**
     * 检查记录统计
     *
     * @param deptId
     * @param title
     * @param overdue
     * @param startTime
     * @param endTime
     * @return
     */
    QualityExecNumDTO execNumDeptId(Integer deptId, String title, Integer overdue, Date startTime, Date endTime);


    /**
     * 检查记录导出
     *
     * @param execIds
     * @param deptId
     */
    void execExport(String execIds, Integer deptId);

}
